#ifndef LABCONTROLLER_HPP
#define LABCONTROLLER_HPP

#include <string>

#include "primeFunctions.hpp"

using namespace std;

class LabController
{
public:
  void initLab();
  void run();
  LabController(std::string benchName);
  ~LabController();

private:
  int windowSize,timeCost_criminisi,timeCost_improved;
  float damagedPercent;
  string benchName;
  cv::Mat orig, mask, mask255, result_criminisi, result_improved, origBU, contour;
  yjy::Config* cf;

  void extractMaskFromBench(cv::Mat &maskImg, cv::Mat &mask, unsigned char mask_val=1, unsigned char red_color_min=224, unsigned char other_color_max=31);
  void getOrigMask(std::string benchName, cv::Mat &orig, cv::Mat &mask, cv::Mat &mask255);
  void displayResult();
  void printData();
  void saveData();

  int initWSCalculator(float dpc,float ps);
};

#endif